import router from './router'
import store from '@/store'
// 导入进度条插件
import NProgress from 'nprogress'
// 导入进度条样式
import 'nprogress/nprogress.css'
// 导入拼接字符串, 修改浏览器标题
import getPageTitle from '@/utils/get-page-title'

const whiteList = ['/login', '/404'] // 未登录状态可以看到登录页和404页面

// 全局前置守卫 - 钩子函数
router.beforeEach(async(to, from, next) => {
  NProgress.start()
  // 如果添加await等请求完才会跳转
  // 如果没有添加跳转完再去更新
  if (!store.getters.name && to.path !== '/login') await store.dispatch('user/getUserInfoActions')

  const token = store.getters.token
  if (token) { // 登录了
    // 登录了要去别的页面
    if (to.path === '/login') {
      next('/')
    } else {
      next()
    }
  } else { // 未登录
    // 需要再次判断->如果去登录页放行,如果别的页面你没登录不能去(打回到登录页)
    // 判断要去的路径是否出现,是返回true
    // includes -> 包含
    if (whiteList.includes(to.path)) {
      next()
    } else {
      next('/login')
    }
  }
})

router.afterEach(() => {
  NProgress.done()
  // 切换路由页面, 动态修改浏览器标题
  // 百度搜到:document.title = "标题文字"
  // 已知条件:(有就直接用过,没有可以自己添加) 路由对象里meta.title
  // router.currentRoute -> 当前路由页面的路由对象(会变的)
  document.title = getPageTitle(router.currentRoute.meta.title)
})
